
import { MainStrategy } from "./CreateStrategy/MainStrategy";
import { EntityDB } from "./EntityDB";
import { EntityFactory } from "./EntityFactory";
import { EntityType } from "./Entitys/Entity.interface";

/**
 * 实体管理类,检查任务状态,,房间状态等,更新实体,
 * 还是按照之前一样的模式创建实体
*/
export class EntityManager
{
    private entityDB:EntityDB;
    constructor()
    {
        this.entityDB = new EntityDB();
    }
    get Entities()
    {
        return this.entityDB.Entities
    }
    get EntityDB()
    {
        return this.entityDB;
    }
    public init()
    {
        EntityFactory.init();
        this.entityDB.init();
        global.entityDB = this.entityDB;
        // 初始化房间实体
        // for(let k in Game.rooms)
        // {
        //     this.updateRoom(k);
        // }
    }

    // 更新实体
    public update()
    {
        // 根据任务配置  work harvest queen transport 的数量
        // for(let k in Game.rooms)
        // {
        //     this.updateRoom(k);
        // }
    }
    
    public addEntity<I extends IEntityInitializer=IEntityInitializer,T extends EntityType=EntityType>(type:T ,initializer:I)
    {
         
        if(this.entityDB.getEntityByID(initializer.GUID))
        {
            throw new Error(`重复的GUID创建 :${type} -> ${JSON.stringify(initializer)}`);
        }
        const entity = EntityFactory.CreateModule(type,initializer,this.EntityDB);
        this.EntityDB.add(entity);
        return entity;
    }
    // /**
    //  * 
    // */
}